//package com.folioreader.ui.adapter;
//
//import android.app.SearchManager;
//import android.content.Context;
//import android.graphics.Typeface;
//import android.os.Bundle;
//import android.text.SpannableString;
//import android.text.TextUtils;
//import android.text.style.StyleSpan;
//import android.text.style.UnderlineSpan;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.view.ViewGroup;
//import android.widget.TextView;
//
//import androidx.annotation.NonNull;
//import androidx.recyclerview.widget.RecyclerView;
//
//import com.folioreader.R;
//import com.folioreader.model.locators.SearchItemType;
//import com.folioreader.model.locators.SearchLocator;
//
//import org.jetbrains.annotations.Nullable;
//
//import java.util.ArrayList;
//import java.util.List;
//
//public class SearchAdapter extends RecyclerView.Adapter<ViewHolder> {
//    public static final String DATA_BUNDLE = "DATA_BUNDLE";
//
//    private Context context;
//    private ListViewType listViewType;
//    private List<SearchLocator> searchLocatorList;
//    private OnItemClickListener onItemClickListener;
//
//    public final OnItemClickListener getOnItemClickListener() {
//        return this.onItemClickListener;
//    }
//
//    public final void setOnItemClickListener(@Nullable OnItemClickListener var1) {
//        this.onItemClickListener = var1;
//    }
//
//    public SearchAdapter(Context context) {
//        this.context = context;
//    }
//
//    public SearchAdapter(Context context, Bundle dataBundle) {
//        this.context = context;
//        listViewType = ListViewType.fromString(dataBundle.getString(ListViewType.KEY));
//        searchLocatorList = dataBundle.getParcelableArrayList("DATA") != null ? dataBundle.getParcelableArrayList("DATA") : new ArrayList();
//    }
//
//    public void changeDataBundle(Bundle dataBundle) {
//
//        listViewType = ListViewType.fromString(dataBundle.getString(ListViewType.KEY));
//        searchLocatorList = dataBundle.getParcelableArrayList("DATA") != null ? dataBundle.getParcelableArrayList("DATA") : new ArrayList();
//        notifyDataSetChanged();
//    }
//
//
//    @Override
//    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
//        ViewHolder viewHolder;
//        View itemView;
//        if (viewType == ListViewType.INIT_VIEW.getValue()) {
//            itemView = LayoutInflater.from(context).inflate(R.layout.item_search_init, parent, false);
//            viewHolder = new InitViewHOlder(itemView);
//        } else if (viewType == ListViewType.LOADING_VIEW.getValue()) {
//            itemView = LayoutInflater.from(context).inflate(R.layout.item_search_loading, parent, false);
//            viewHolder = new LoadingViewHolder(itemView);
//        } else if (viewType == ListViewType.NORMAL_VIEW.getValue()) {
//            itemView = LayoutInflater.from(context).inflate(R.layout.item_search_normal, parent, false);
//            viewHolder = new NormalViewHolder(itemView);
//        } else if (viewType == ListViewType.PAGINATION_IN_PROGRESS_VIEW.getValue()) {
//            itemView = LayoutInflater.from(context).inflate(R.layout.item_search_pagination_in_progress, parent, false);
//            viewHolder = new PaginationViewHolder(itemView);
//        } else if (viewType == ListViewType.EMPTY_VIEW.getValue()) {
//            itemView = LayoutInflater.from(context).inflate(R.layout.item_search_empty, parent, false);
//            viewHolder = new EmptyViewHolder(itemView);
//        } else if (viewType == ListViewType.FAILURE_VIEW.getValue()) {
//            itemView = LayoutInflater.from(context).inflate(R.layout.item_search_failure, parent, false);
//            viewHolder = new FailureViewHolder(itemView);
//        } else {
//            viewHolder = null;
//        }
//
//        return viewHolder;
//
//    }
//
//    @Override
//    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
//        if (getItemViewType(position) == ListViewType.NORMAL_VIEW.getValue()) {
//            holder.onBind(position);
//        }
//    }
//
//    public int getItemCount() {
//        return this.searchLocatorList.size() == 0 ? 1 : (this.listViewType == ListViewType.PAGINATION_IN_PROGRESS_VIEW ? this.searchLocatorList.size() + 1 : this.searchLocatorList.size());
//    }
//
//    public int getItemViewType(int position) {
//        if (listViewType == ListViewType.PAGINATION_IN_PROGRESS_VIEW && position == getItemCount() - 1) {
//            return ListViewType.PAGINATION_IN_PROGRESS_VIEW.getValue();
//
//        } else if (listViewType == ListViewType.PAGINATION_IN_PROGRESS_VIEW) {
//            return ListViewType.NORMAL_VIEW.getValue();
//
//        } else {
//            return listViewType.getValue();
//        }
//    }
//
//    public class InitViewHOlder extends ViewHolder {
//
//        public InitViewHOlder(@NonNull View itemView) {
//            super(itemView);
//            listViewType = ListViewType.INIT_VIEW;
//        }
//    }
//
//    public class NormalViewHolder extends ViewHolder implements View.OnClickListener {
//        private TextView textViewCount;
//        private TextView textViewTitle;
//        private TextView textViewResult;
//        public SearchLocator searchLocator;
//
//        public NormalViewHolder(@NonNull View itemView) {
//            super(itemView);
//            textViewCount = itemView.findViewById(R.id.textViewCount);
//            textViewTitle = itemView.findViewById(R.id.textViewTitle);
//            textViewResult = itemView.findViewById(R.id.textViewResult);
//
//            listViewType = ListViewType.INIT_VIEW;
//        }
//
//        public void onBind(int position) {
//            itemPosition = position;
//            searchLocator = searchLocatorList.get(position);
//            if (searchLocator.getSearchItemType() == SearchItemType.SEARCH_COUNT_ITEM) {
//                int count = Integer.valueOf(searchLocator.getPrimaryContents());
//                textViewCount.setText(context.getResources().getQuantityString(R.plurals.numberOfSearchResults, count, count));
//
//                textViewCount.setVisibility(View.VISIBLE);
//                textViewTitle.setVisibility(View.GONE);
//                textViewResult.setVisibility(View.GONE);
//
//                itemView.setOnClickListener(null);
//
//            } else if (searchLocator.getSearchItemType() == SearchItemType.RESOURCE_TITLE_ITEM) {
//
//                textViewTitle.setText(searchLocator.getPrimaryContents());
//
//                textViewTitle.setVisibility(View.VISIBLE);
//                textViewCount.setVisibility(View.GONE);
//                textViewResult.setVisibility(View.GONE);
//
//                itemView.setOnClickListener(null);
//
//
//            } else if (searchLocator.getSearchItemType() == SearchItemType.SEARCH_RESULT_ITEM) {
//                String s = "";
//                if (searchLocator.getText() != null) {
//                    s = searchLocator.getText().getBefore() + searchLocator.getText().getHightlight() + searchLocator.getText().getAfter();
//                }
//                SpannableString spannableString = new SpannableString(s);
//
//                int from = searchLocator.getText().getBefore().length() > 0 ? searchLocator.getText().getBefore().length() : 0;
//                int to = from + (searchLocator.getText().getHightlight().length() > 0 ? searchLocator.getText().getHightlight().length() : 0);
//                spannableString.setSpan(new StyleSpan(Typeface.BOLD), from, to, 0);
//                spannableString.setSpan(new UnderlineSpan(), from, to, 0);
//
//                textViewResult.setText(spannableString);
//
//                textViewResult.setVisibility(View.VISIBLE);
//                textViewTitle.setVisibility(View.GONE);
//                textViewCount.setVisibility(View.GONE);
//
//                itemView.setOnClickListener(this);
//
//            }
//        }
//
//
//        @Override
//        public void onClick(View v) {
//            if (onItemClickListener != null) {
//                onItemClickListener.onItemClick(SearchAdapter.this, this, itemPosition, getItemId());
//
//            }
//        }
//    }
//
//    public class LoadingViewHolder extends ViewHolder {
//
//        public LoadingViewHolder(@NonNull View itemView) {
//            super(itemView);
//            listViewType = ListViewType.LOADING_VIEW;
//        }
//    }
//
//    public class PaginationViewHolder extends ViewHolder {
//
//        public PaginationViewHolder(@NonNull View itemView) {
//            super(itemView);
//            listViewType = ListViewType.PAGINATION_IN_PROGRESS_VIEW;
//        }
//    }
//
//    public class EmptyViewHolder extends ViewHolder {
//
//        public EmptyViewHolder(@NonNull View itemView) {
//            super(itemView);
//            listViewType = ListViewType.EMPTY_VIEW;
//        }
//    }
//
//    public class FailureViewHolder extends ViewHolder {
//
//        public FailureViewHolder(@NonNull View itemView) {
//            super(itemView);
//            listViewType = ListViewType.FAILURE_VIEW;
//        }
//    }
//}
